import Dialog from '@vant/weapp/dialog/dialog';
import {
    debounce
} from "lodash"
import {
    reqCart,
    reqUpdataChecked,
    reqDeleteGood,
    reqAddOrUpdataCart
} from "../../api/index"

Page({
    data: {
        cartArr: [],
        // 购物车中商品的总价
        totalPrice: 0,
        // 购物车中选择的商品
        totalCount: 0,
    },
    onShow() {
        // 获取token
        const token = wx.getStorageSync('TOKEN');
        if (!token) {
            wx.navigateTo({
                url: '/pages/login/login',
            })
        }
        // 获取数据
        this.getUserCart();
    },
    onShow() {
        // 更新一下数据
        this.getUserCart();
    },
    // 获取用户购物车数据
    async getUserCart() {
        const result = await reqCart()
        if (result.code == 200) {
            this.setData({
                cartArr: result.data
            })
            // 计算商品总价
            this.computeTotalPrice();
            // 计算购物车中选择的商品
            this.computeTotalCount();
        } else if (result.code == 208) {

            wx.navigateTo({
                url: '/pages/login/login',
            })
        }
    },
    // 计算购物车中选择的商品
    computeTotalCount() {
        this.setData({
            totalCount: this.data.cartArr.reduce((prev, next) => {
                // 商品勾选
                if (next.isChecked) {
                    prev += next.isChecked;
                }
                return prev
            }, 0)
        })

    },
    // 计算商品总价
    computeTotalPrice() {
        this.setData({
            totalPrice: this.data.cartArr.reduce((prev, next) => {
                // 商品勾选
                if (next.isChecked) {
                    prev += next.price * next.count;
                }
                return prev
            }, 0)
        })
    },
    // 提交单个商品是否加入订单
    async updataChecked(event) {
        // 商品id
        const goodsId = event.currentTarget.dataset.goodsid
        // 选装状态 {1|0}
        const isChecked = event.detail ? 1 : 0;
        try {
            // 更新商品状态
            await reqUpdataChecked(goodsId, isChecked)
            // 重新获取数据
            await this.getUserCart()
        } catch (error) {
            console.log("更新选择数据失败", error);
        }

    },
    // 点击删除图标调用
    deleteGood(event) {
        // 商品id
        const goodsId = event.currentTarget.dataset.goodsid
        // 弹出提示框信息
        Dialog.confirm({
                title: '确认要删除商品吗?',
            })
            .then(async () => {
                // 确认删除
                await reqDeleteGood(goodsId)
                // 重新获取数据
                await this.getUserCart()
            })
            .catch(() => {
                // on cancel
            });
    },
    // 购物车中商品数量的增改
    updataCount: debounce(async function (event) {
            // 商品id
            const goodsId = event.currentTarget.dataset.goodsid
            // 差值
            const count = event.detail - event.currentTarget.dataset.oldcount
            // 新值有变化才更新
            if (count) {
                // 更新  
                await reqAddOrUpdataCart(goodsId, count)
                // 获取新数据
                await this.getUserCart()
            }
        },
        100),
    // 跳转支付页面
    goOrder(){
        wx.navigateTo({
          url: '/pages/order/order',
        })
    }
})